package java_learn.java_jinjie.DataStructure;

/**
 * 哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到地址,不是数据实际存储的物理地址)
 * 在Object类有一个方法,可以获取对象的哈希值
 * int hashCode() 返回该对象的哈希码值。
 * hashCode方法的源码:
 * public native int hashCode();
 * native:代表该方法调用的是本地操作系统的方法
 * 红黑树的约束:
 * 1. 节点可以是红色的或者黑色的 2. 根节点是黑色的
 * 3. 叶子节点(特指空节点)是黑色的
 * 4. 每个红色节点的子节点都是黑色的
 * 5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同
 * 红黑树的特点: 速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍
 */
public class DemoHashCode {
    public static void main(String[] args) {
        //Person类继承了object类，所以可以使用object类hashcode方法
        Person p1 = new Person();
        int h1 = p1.hashCode();
        System.out.print(h1);
        System.out.println();
        Person p2 = new Person();
        int h2 = p2.hashCode();
        System.out.print(h2);
    }
}
